package com.csp.mingyue.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.csp.mingyue.common.mybatis.page.PageCommon;
import com.csp.mingyue.system.api.dto.UserAddOrEditDto;
import com.csp.mingyue.system.api.dto.UserQueryDto;
import com.csp.mingyue.system.api.entity.SysUser;
import com.csp.mingyue.system.api.vo.LoginUser;
import com.csp.mingyue.system.api.vo.SysUserVo;
import com.csp.mingyue.system.api.vo.UserInfoVo;

/**
 * 用户表 服务类
 *
 * @author Strive
 * @since 2023-06-06 03:15:20
 */
public interface SysUserService extends IService<SysUser> {

	/**
	 * 通过用户名获取用户信息
	 * @param username 用户名
	 * @return 用户信息
	 */
	LoginUser getSysUserInfoByUsername(String username);

	/**
	 * 通过手机号获取用户信息
	 * @param phone 手机号
	 * @return 用户信息
	 */
	LoginUser getSysUserInfoByPhone(String phone);

	/**
	 * 通过邮箱获取用户信息
	 * @param email 邮箱
	 * @return 用户信息
	 */
	LoginUser getSysUserInfoByEmail(String email);

	/**
	 * 获取所有用户信息
	 * @return 所有用户信息
	 */
	IPage<SysUserVo> getSysUsers(PageCommon page, UserQueryDto dto);

	/**
	 * 获取当前登录用户信息
	 * @return 用户信息-包含角色信息
	 */
	UserInfoVo getUserInfo();

	/**
	 * 添加或编辑用户
	 * @param dto
	 * @return
	 */
	boolean addOrEdit(UserAddOrEditDto dto);

	/**
	 * 通过用户ID删除用户
	 * @param userId 用户ID
	 * @return
	 */
	boolean delUser(Long userId);

	/**
	 * 用户注册
	 * @param sysUser 系统用户
	 * @return true:注册成功 / false:注册失败
	 */
	boolean register(SysUser sysUser);

}
